package cn.edu.seu.ssny.service;

import cn.edu.seu.ssny.entity.Device;
import cn.edu.seu.ssny.entity.Project;

import java.util.List;
import java.util.Map;

/**
 * 根据需求进行采集点查询
 */
public interface IQueryDeviceService {

    /**
     * 功能描述:
     * <返回所有需要进行可再生能源利用量统计的采集点
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @return
     */
    List<Integer> findAllRenewEnergyDeviceIds();

    /**
     * 功能描述:
     * <返回所有需要进行节约标煤量统计的采集点
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @return
     */
    List<Integer> findAllCoalSavedDeviceIds();

    /**
     * 功能描述:
     * <返回所有需要进行碳排放量统计的采集点
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @return
     */
    List<Integer> findAllCarbonEmissionDeviceIds();

    /**
     * 功能描述:
     * <返回所有需要进行供暖能耗统计的采集点(指定项目)
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @param project
     * @return
     */
    List<Integer> findAllHeatingPowercostDeviceIds(Project project);


    /**
     * 功能描述:
     * <返回所有需要进行制冷能耗统计的采集点(指定项目)
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @param project
     * @return
     */
    List<Integer> findAllCoolingPowercostDeviceIds(Project project);

    /**
     * 功能描述:
     * <返回所有需要进行供暖量统计的采集点(指定项目)
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @param project
     * @return
     */
    List<Integer> findAllHeatingEnergyDeviceIds(Project project);

    /**
     * 功能描述:
     * <返回所有需要进行制冷量统计的采集点(指定项目)
     * <如果查询结果为空，就返回空列表，不返回null
     *
     * @param project
     * @return
     */
    List<Integer> findAllCoolingEnergyDeviceIds(Project project);


    /**
     * 功能描述:
     * <返回能耗占比中 按照分类 返回分类中的所有采集点
     * <分类1-分类1中的所有采集点
     * <...
     * <分类N-分类N中的所有采集点
     *
     * @param project
     * @return
     */
    Map<String, List<Integer>> findAllPowercostRateTypeAndDeviceIds(Project project);

    /**
     * 功能描述:
     * <返回机组能效中 按照机组分类 返回分类中的所有供冷量或者供暖量采集点
     * <机组1-机组1中的供冷量或者供暖量采集点
     * <...
     * <机组N-机组N中的供冷量或者供暖量采集点
     *
     * @param project
     * @return
     */
    Map<String, List<Integer>> findAllMachineGroupAndEnergyDeviceIds(Project project);


    /**
     * 功能描述:
     * <返回机组能效中 按照机组分类 返回分类中的所有能耗采集点
     * <机组1-机组1中的能耗采集点
     * <...
     * <机组N-机组N中的能耗采集点
     *
     * @param project
     * @return
     */
    Map<String, List<Integer>> findAllMachineGroupAndPowercostDeviceIds(Project project);

    /**
     * 功能描述:
     * <返回系统能耗指标 制冷模式 所有能耗采集点ID
     *
     * @param project
     * @return
     */
    List<Integer> findAllSystemPowercostStdOnCoolingModeDevices(Project project);

    /**
     * 功能描述:
     * <返回系统能耗指标 供暖模式 所有能耗采集点ID
     *
     * @param project
     * @return
     */
    List<Integer> findAllSystemPowercostStdOnHeatingModeDevices(Project project);

}
